package com.elitel.frame.core.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;

public class FreemarkerUtil {


	/**
	 * 输出文件
	 * 
	 * @param name
	 * @param root
	 * @param outFile
	 */
	public static void freeMarkerprint(String name, String dir, Map<String, Object> root, String outFile) {
		Configuration cfg = new Configuration();
		FileWriter out = null;
		try {
			 cfg.setDirectoryForTemplateLoading(new File(dir)); 
			 // 设置对象包装器  
	         cfg.setObjectWrapper(new DefaultObjectWrapper());  
	         // 设置异常处理器  
	         cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);  
			 // 通过一个文件输出流，就可以写到相应的文件中，此处用的是绝对路径
			out = new FileWriter(new File(outFile));
			Template temp = cfg.getTemplate(name);
			temp.process(root, out);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		} finally {
			try {
				if (out != null)
					out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
